# -*- coding: UTF-8 -*- #
"""
-------真正的勇士， 敢于直面惨淡的Warning、 敢于正视淋漓的Error-----
@author : 贾鹏博
@file : 10、接口自动化代理配置.py
@time : 2022/5/14 23:57
"""

# 什么是代理

"""
代理在接口自动化的使用场景
    测试脚本，更直观的排查请求错误，相当于编写代码时的 debug
    获取没有错误的，真实的接口请求响应信息
    通过代理获取自动化测试的请求响应
    对比两次请求响应的区别
"""

# ===========================   Request 如何使用代理   ->  通过 proxies 参数，监听请求与响应信息  =======================

import requests

# proxies = {
#     'http': 'http://10.10.1.10:3128',
#     'https': 'http://10.10.1.10:1080'}
#
# requests.get('http://example.org', proxies=proxies)

# ========================================== 使用代理 ========================================================
"""
如何使用：
    1、设定代理格式
    2、通过 proxies 参数传递代理设置
    3、开启代理工具监听请求
"""

import requests


def test_proxies():
    # 定义一个代理的配置信息   key值为协议， value 为代理工具的配置
    proxies = {'http': 'http://127.0.0.1:8080',
               'https': 'http://127.0.0.1:8080'}
    data = {"a": 1}
    # 通过 proxies 传递代理配置
    r = requests.post(url='https://httpbin.testing-studio.com/post', json=data, proxies=proxies,
                      verify=False)
    """
    {
      "args": {}, 
      "data": "{\"a\": 1}", 
      "files": {}, 
      "form": {}, 
      "headers": {
        "Accept": "*/*", 
        "Accept-Encoding": "gzip, deflate, br", 
        "Content-Length": "8", 
        "Content-Type": "application/json", 
        "Host": "httpbin.testing-studio.com", 
        "User-Agent": "python-requests/2.28.1", 
        "X-Forwarded-Host": "httpbin.testing-studio.com", 
        "X-Forwarded-Scheme": "https", 
        "X-Scheme": "https"
      }, 
      "json": {
        "a": 1
      }, 
      "origin": "111.18.44.195", 
      "url": "https://httpbin.testing-studio.com/post"
    }
    """
    print(r.text)
    assert r.status_code == 200
